﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;   // 集合的命名空间

namespace 集合01
{
    class Program
    {
        static void Main(string[] args)
        {
            //Program[] pp = new Program[2];
            //Program p1 = new Program();
            //Program p2 = new Program();
            //pp[0] = p1;
            //pp[1] = p2;

            // 集合里面可以放各种类型的数据
            ArrayList al = new ArrayList();
            // 往集合添加数据使用Add
            // 添加值类型进行了装箱操作，因为集合里存的是object
            al.Add(1);
            al.Add(1.2f);
            al.Add(1.23);
            al.Add('c');
            al.Add("str");
            al.Add(new Program());
            A a = new A(1001, "laowang");
            al.Add(a);
            al.Add(new A(1002, "xiaowang"));

            bool b = al.Contains("str");
            Console.WriteLine(b);
            //al.Add(1);
            //al.Add(1.2f);
            //al.Add(1.23);
            //al.Add('c');
            //al.Add("str");

            // 拆箱，由object转换为了int
            Console.WriteLine(al[0]);

            // 集合的容量是动态的，随着里面元素个数的增多而变大，0——>4——>8——>16——>32，容量只会变大不会变小
            int cpc = al.Capacity;
            Console.WriteLine(cpc);
            // 表示包含了多少个元素（真实的数量）
            int count = al.Count;
            Console.WriteLine(count);

            //把集合里面的元素清空
            al.Clear();
            Console.WriteLine(cpc);
            Console.WriteLine(al.Count);

            //Insert、Remove、Reverse、Contains
        }
    }

    class A
    {
        public int ID { get; set; }
        public string Name { get;set; }
        public A(int id, string name)
        {
            ID = id;
            Name = name;
        }
    }
}
